package demo;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;



public class Test {
    //洗牌算法
    public static void main(String[] args) {
        Game game = new Game();

        //买扑克
        List<Poker> pokers = game.buyPoker();

        System.out.println("扑克:>");
        System.out.println(pokers);

        //洗扑克
        System.out.println("洗牌：>");
        game.shuffle(pokers);
        System.out.println(pokers);

        //揭牌 ： 每次删除 pokers集合的 0 下标
        //三个人 每个人，轮流抓5张牌
        List<List<Poker>> hand = game.game(pokers);
        System.out.println("揭牌:>");
        for (int i = 0; i < hand.size(); i++) {
            System.out.println("第"+(i+1)+"个人的牌：>"+hand.get(i));
        }

        //剩下的牌
        System.out.println("剩下的牌：>");
        System.out.println(pokers);

    }


    //杨辉三角
    public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<>();

        List<Integer> row = new ArrayList<>();
        row.add(1);
        ret.add(row);
        for (int i = 1; i < numRows; i++) {
            //获取上一行
            List<Integer> prevRow = ret.get(i-1);
            //curRow ： 当前行
            List<Integer> curRow = new ArrayList<>();
            curRow.add(1);//第一个1

            //中间 curRow list 的赋值
            for (int j = 1; j <i ; j++) {
                int x = prevRow.get(j)+prevRow.get(j-1);
                curRow.add(x);
            }
            curRow.add(1);//最后一个1
            ret.add(curRow);
        }
        return ret;
    }

    public static void main5(String[] args) {
        List<List<Integer>> lists = generate(5);
        System.out.println(lists);

       /*
        输出：
        [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]*/
    }
    public static void main4(String[] args) {
        //将s1中含有s2的元素，删掉
        //s1 -> wl t bit
        ArrayList<Character> arrayList = new ArrayList<>();
        String s1 = "welcome to bit";
        String s2 = "come";

        for (int i = 0; i < s1.length(); i++) {
            char ch = s1.charAt(i);
            //contains 传参的时候，需要一个String，不可以是 char
            if(!s2.contains(ch+"")){
                arrayList.add(ch);
            }
        }
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.print(arrayList.get(i));
        }
        /*
        输出：
        wl t bit
        */


    }
    public static void main3(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
        arrayList.add(6);
        arrayList.add(7);
        arrayList.add(8);
        //1. 第一种输出 toString
        System.out.println(arrayList);


        System.out.println("-----------------------");

        //2. for循环
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.print(arrayList.get(i)+" ");
        }

        System.out.println();
        System.out.println("-----------------------");
        //3. foreach 循环
        for (Integer x:arrayList) {
            System.out.print(x+" ");
        }
        System.out.println();
        System.out.println("-----------------------");
        //4. 迭代器
        ListIterator<Integer> iterator = arrayList.listIterator();
        while(iterator.hasNext()){
            //next 打印的同时，让 iterator 往前走一步！
            System.out.print(iterator.next()+" ");
        }



        //输出：
        /*        [1, 2, 3, 4, 5, 6, 7, 8]
                -----------------------
                1 2 3 4 5 6 7 8
                -----------------------
                1 2 3 4 5 6 7 8
                -----------------------
                1 2 3 4 5 6 7 8*/


    }
    public static void main2(String[] args) {
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5);
        arrayList.add(6);
        arrayList.add(7);
        arrayList.add(8);

        // arrayList 和 sub 共用 1个 elemData
        //不是浅拷贝！！！
        //截取集合 的 [1,3)
        List<Integer> sub = arrayList.subList(1,3);
        sub.set(0,999);
        System.out.println("sub："+sub);
        System.out.println("arrayList："+arrayList);

/* 输出：sub：[999, 3]
        arrayList：[1, 999, 3, 4, 5, 6, 7, 8]*/
    }

    public static void main1(String[] args) {

        //LinkedList 实现了 Collection接口
        //符合了ArrayList的标准
        LinkedList<Integer> linkedList = new LinkedList<>();
        linkedList.add(11);
        linkedList.add(12);
        linkedList.add(13);


        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(0,500);
        System.out.println(arrayList);



    }
}
